#include "../logs/bitlog.h"
using namespace bitlog;

void test()
{
    DEBUG("%s", "默认日日志器测试");
    INFO("%s", "默认日日志器测试");
    WARN("%s", "默认日日志器测试");
    ERROR("%s", "默认日日志器测试");
    FATAL("%s", "默认日日志器测试");

    getLogger("Async_logger")->debug("%s", "创建日志器测试");
    getLogger("Async_logger")->info("%s", "创建日志器测试");
    getLogger("Async_logger")->warn("%s", "创建日志器测试");
    getLogger("Async_logger")->error("%s", "创建日志器测试");
    getLogger("Async_logger")->fatal("%s", "创建日志器测试");
}

int main()
{
    std::string logger_name = "Async_logger";
    std::unique_ptr<LoggerBuilder> builder(new GlobalLoggerBuilder());
    // builder->buildLoggerType(LoggerType::LOGGER_SYNC); // 同步日志模式
    builder->buildLoggerType(LoggerType::LOGGER_ASYNC); // 异步日志模式
    builder->buildLoggerName(logger_name); // 日志器名称
    builder->buildLoggerLevel(LogLevel::lev::WARN); // 限制WARN等级及以上的日志才能输出
    builder->buildSink<StdoutSink>(); // 落地到标准输出
    builder->buildSink<FileSink>("./logfile/test.log"); // 落地到指定文件
    // builder->buildSink<RollBySizeSink>("./logfile/test.log", 1024 * 1024 * 10); // 落地到以10M为限制的滚动文件
    // builder->buildSink<RollByTimeSink>("./logfile/test.log", 60); // 落地到以60s为限制的滚动文件

    builder->build(); // 完成构建

    test();
    
    return 0;
}